package net.onewfour.dao.detail;

import java.util.List;

import net.onewfour.dao.DBSuper;
import net.onewfour.dao.TableList;

import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
 
/***
 * 栏目DB类
 * @author Marc
 * @version 1.0
 */
public class DBCategory extends DBSuper {
	
	private static DBCategory DB = null ; 
	
	/***
	 * 
	 * @user Marc
	 * @createtime 2015年1月23日 上午10:25:20
	 * @param id
	 * @return 根据ID返回栏目
	 */
	public Record getCategory(Object id){
		String key = TableList._Category+"@ID"+id ; 
		Record  cord = super.cache(TableList._Category, key);
		if(cord == null){
			cord = Db.findById(getFullTable(TableList._Category), id);
			super.cache(TableList._Category, key, cord);
		}
		return cord ; 
	}
	
	/***
	 * 获取所有的栏目
	 * @user Marc
	 * @createtime 2015年1月23日 上午10:27:11
	 * @return
	 */
	public List<Record> getAllCategory(){
		List<Record>  list = super.cache(TableList._Category, TableList._Category);
		if(list == null ){
			list = super.find(TableList._Category);
			super.cache(TableList._Category, TableList._Category, list);
		}
		return list ; 
	}
	/**
	 * 数据库栏目比对方法，
	 * @user Marc
	 * @createtime 2015年1月27日 下午3:10:58
	 * @param newList
	 */
	public void comparisonCategory(List<Record> newList) {
		if(newList == null || newList.size() == 0)
			return ; 
		List<Record> oldList = super.find(TableList._Category);
		for (int i = 0; i < newList.size(); i++) {
			Record newRecord = newList.get(i);
			int newID = newRecord.getInt("zhihuid");
			for (int j = 0; j < oldList.size(); j++) {
				Long oldID = oldList.get(j).getLong("zhihuid");
				if(newID == oldID){
					//如果找到了相同的ID，就吧原知乎的替换掉
					newList.set(i, oldList.get(j));
					break ;
				}
				//说明数据库里面没有id
				if(j+1 == oldList.size()){
					addRecord(newRecord);
				}
			}
		}
		
	}
	
	/***
	 * 添加一个栏目
	 * @user Marc
	 * @createtime 2015年1月27日 下午3:14:51
	 * @param newRecord
	 */
	private void addRecord(Record newRecord) {
		super.save(TableList._Category, newRecord);
	}

	/***
	 * 初始化当前类
	 * @user Marc
	 * @createtime 2015年1月23日 下午5:08:30
	 * @return
	 */
	public static DBCategory instance() {
		if(DB==null){
			DB = new DBCategory();
		}
		return DB;
	}

	
}
